<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 两数之后
        // 首先输入一个数字，然后在数组里面进行循环两个数字相加，是否
        // 大于输入的这个数字，如果等于就返回数组里面的那两个下标使用数组进行包裹，
        // 如果不等于的话就返回一个空数组
        // 方法一：暴力枚举法
        // function aA(x, y) {
        //     const a = x.length;
        //     for (let i = 0; i < a; i++) {
        //         for (let j = i + 1; j < a; j++) {
        //             if (x[i] + x[j] === y) {
        //                 return [i, j];
        //             }
        //         }
        //     }
        //     return [];
        // }
        // const x = [4, 8, 3, 22, 10];
        // const y = 18;
        // const y2 = 77;
        // console.log(aA(x, y));
        // console.log(aA(x, y2));

        // 方法二：哈希表法
        function aaa(x, y) {
            const hash = new Map();

            for (let i=0;i<x.length;i++){
                const complement = y - x[i];
                if(hash.has(complement)){
                    return [hash.get(complement), i];
                }
                hash.set(x[i],i);
            }

            return [];
        }
        const x = [4, 8, 3, 22, 10];
        const y = 18;
        console.log(aaa(x, y));
    </script>
</body>

</html>